package br.com.esporte.apresentacao;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.protocol.http.WebApplication;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import br.com.esporte.negocios.fachada.IFachada;
import br.com.esporte.negocios.fachada.imp.Fachada;

public abstract class PaginaGenerica extends WebPage implements IPagina {

	private IFachada fachada;

	private IPagina paginaRetorno;

	public PaginaGenerica() {
		this.montarPagina();
	}

	public PaginaGenerica(IPagina paginaRetorno) {
		this.montarPagina();
		this.paginaRetorno = paginaRetorno;
	}

	public IFachada getFachada() {
		if (fachada == null) {
			try {
				WebApplicationContext ctx = WebApplicationContextUtils
						.getRequiredWebApplicationContext(WebApplication.get()
								.getServletContext());
				this.setFachada((Fachada) ctx.getBean("fachada"));
			} catch (Throwable e) {
				e.printStackTrace();
			}
		}

		return fachada;
	}

	public IPagina getPaginaRetorno() {
		return this.paginaRetorno;
	}

	public abstract void montarPagina();

	public void setFachada(IFachada fachada) {
		this.fachada = fachada;
	}

	public void setPaginaRetorno(IPagina pagina) {
		this.paginaRetorno = pagina;
	}

}
